diff options
| author | 2023-04-19 17:30:39 +0800 | |
|---|---|---|
| committer | 2023-04-19 17:30:39 +0800 | |
| commit | 3adc965dd09490b7efa1cce9f09b0a3b30970277 (patch) | |
| tree | f813abb07d7b003984aa74e3154752b6ffc3ccd5 /envshare/pages/api/v1/secret/[id].ts | |
| parent | c7c9ca6f0c8eddf6d34cd40779f3b2d9463f3a46 (diff) | |
| download | HydroRoll-3adc965dd09490b7efa1cce9f09b0a3b30970277.tar.gz HydroRoll-3adc965dd09490b7efa1cce9f09b0a3b30970277.zip | |
✨优化文档
Diffstat (limited to 'envshare/pages/api/v1/secret/[id].ts')
| -rw-r--r-- | envshare/pages/api/v1/secret/[id].ts | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/envshare/pages/api/v1/secret/[id].ts b/envshare/pages/api/v1/secret/[id].ts deleted file mode 100644 index 8b5f082..0000000 --- a/envshare/pages/api/v1/secret/[id].ts +++ /dev/null @@ -1,58 +0,0 @@ -import { NextRequest, NextResponse } from "next/server"; -import { Redis } from "@upstash/redis"; -import { z } from "zod"; - -const responseValidation = z.union([ - z.object({ - data: z.object({ - remainingReads: z.number().int().optional(), - secret: z.string(), - }), - }), - z.object({ - error: z.string(), - }), -]); - -const redis = Redis.fromEnv(); -export default async function handler(req: NextRequest): Promise<NextResponse> { - try { - if (req.method !== "GET") { - return NextResponse.json({ error: "Method Not Allowed" }, { status: 405 }); - } - const id = new URL(req.url).searchParams.get("id"); - if (!id) { - return NextResponse.json({ error: "Missing `id` parameter" }, { status: 400 }); - } - - const redisKey = ["envshare", id].join(":"); - - const [data, _] = await Promise.all([ - await redis.hgetall<{ secret: string; remainingReads: number | null }>(redisKey), - await redis.incr("envshare:metrics:reads"), - ]); - - if (!data) { - return NextResponse.json({ error: "Not Found" }, { status: 404 }); - } - if (data.remainingReads !== null && data.remainingReads < 1) { - await redis.del(redisKey); - return NextResponse.json({ error: "Not Found" }, { status: 404 }); - } - - let remainingReads: number | null = null; - if (data.remainingReads !== null) { - // Decrement the number of reads and return the remaining reads - remainingReads = await redis.hincrby(redisKey, "remainingReads", -1); - } - - return NextResponse.json({ data: { secret: data.secret, remainingReads: remainingReads ?? undefined } }); - } catch (e) { - console.error(e); - return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }); - } -} - -export const config = { - runtime: "edge", -}; |
